package pe.com.ValoracionVivienda.service.impl;

import java.util.List;

import pe.com.ValoracionVivienda.domain.entities.TipoTasacion;
import pe.com.ValoracionVivienda.service.interfaces.MenuArbolService;
import pe.com.ValoracionVivienda.service.interfaces.TipoTasacionService;
import pe.com.ValoracionVivienda.views.model.MenuItemArbol;

public class MenuArbolServiceImpl implements MenuArbolService {

	@Override
	public MenuItemArbol getArbolEntrenamiento() {
		// Traer los tipos de tasaciones activas
		TipoTasacionService tipoTasacionService = new TipoTasacionServiceJpaImpl(); 
		List<TipoTasacion> tasacionesActivas = tipoTasacionService.getActivos();
		tipoTasacionService.close();
		
		// Construccion del arbol
		MenuItemArbol raiz = new MenuItemArbol();
		MenuItemArbol menu;
		
		menu = new MenuItemArbol();
		menu.setNivel(0);
		menu.setNombre("Valoraciones");
		menu.setItemPadre(null);
	
		MenuItemArbol menuPadre1 = new MenuItemArbol();
		MenuItemArbol menuPadre2 = new MenuItemArbol();
		
		// Nodo autovaluo
		menuPadre1.setNivel(1);
		menuPadre1.setNombre("Autovaluo");
		menuPadre1.setItems(null);
		menuPadre1.setItemPadre(menu);
		menu.addItem(menuPadre1);
		
		// Nodo tasacion
		menuPadre2.setNivel(1);
		menuPadre2.setNombre("Tasaciones");
		menuPadre2.setItemPadre(menu);
		menu.addItem(menuPadre2);
		
		for (TipoTasacion tipoTasacionActiva : tasacionesActivas) {
			MenuItemArbol menuHijo = new MenuItemArbol();
			menuHijo.setNivel(2);
			menuHijo.setNombre(tipoTasacionActiva.getNombre());
			menuHijo.setId(tipoTasacionActiva.getId());
			menuHijo.setItems(null);
			menuHijo.setItemPadre(menuPadre2);
			menuPadre2.addItem(menuHijo);
		}

		raiz.setItemPadre(null);
		raiz.addItem(menu);
		return raiz;
	}
}
